/*
 * Rei.java
 *
 * Created on 8 de Agosto de 2006, 00:23
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package magchess10.rn.pecas;

import magchess10.rn.jogada.Jogada;
import magchess10.rn.jogada.JogadaBase;

/**
*
* @author Einstein
*/
public class Rei extends Pecas{
    
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	/** Creates a new instance of Rei */
    public Rei(String p_cor,boolean p_ehPrimeiroLance) {
        super ("Rei",p_cor,p_ehPrimeiroLance);
    }

    public boolean ehMovimentoDaPeca(JogadaBase jogadaAtual) 
    {
    	//todas as direcoes
    	boolean direcaoValida=Movimentos.ehDiagonal(jogadaAtual)||Movimentos.ehVerticalHorizontal(jogadaAtual);
    	//somente uma casa
    	boolean moduloAdjacente=Movimentos.movimentoCasaAdjacente(jogadaAtual);
    	boolean jogadaNormal=direcaoValida&&moduloAdjacente;
    	boolean l_roqueDireita=andarDoisDireita(jogadaAtual)&&((Jogada)jogadaAtual).getInformacoes().getPodeRoqueDireita();
    	boolean l_roqueEsquerda=andarDoisEsquerda(jogadaAtual)&&((Jogada)jogadaAtual).getInformacoes().getPodeRoqueEsquerda();
    	return jogadaNormal||l_roqueEsquerda||l_roqueDireita;
    	
    }
    
    boolean andarDoisDireita(JogadaBase p_atual){
    	int l_colunaDaPosicaoFinal=p_atual.getCasaFinal().getColuna();
    	int l_colunaDaPosicaoInicial=p_atual.getCasaInicial().getColuna();
    	int l_linhaDaPosicaoFinal=p_atual.getCasaFinal().getLinha();
    	int l_linhaDaPosicaoInicial=p_atual.getCasaInicial().getLinha();
       if(l_linhaDaPosicaoInicial==l_linhaDaPosicaoFinal&&
    		   l_colunaDaPosicaoFinal==l_colunaDaPosicaoInicial+2) return true;
       return false;
    }

    boolean andarDoisEsquerda(JogadaBase p_atual){
    	int l_colunaDaPosicaoFinal=p_atual.getCasaFinal().getColuna();
    	int l_colunaDaPosicaoInicial=p_atual.getCasaInicial().getColuna();
    	int l_linhaDaPosicaoFinal=p_atual.getCasaFinal().getLinha();
    	int l_linhaDaPosicaoInicial=p_atual.getCasaInicial().getLinha();
       if(l_linhaDaPosicaoInicial==l_linhaDaPosicaoFinal&&
    		   l_colunaDaPosicaoFinal==l_colunaDaPosicaoInicial-2) return true;
       return false;
    }

	@Override
	public boolean ehTrajetoriaJogada(int tipoTrajetoria) {
		return false;
	}
    
}
